// 对象声明方式
//1.function方式
{
    function A(){
        this.name="a";
    }
    let a=new A();//A { name: 'a' }
    console.log(a);
    console.log(typeof a);//object
    console.log(a instanceof Object );//true
    console.log(a instanceof A );//true
    let b=A();
    console.log(b);//undefined,因为没有返回任何值
}


//2.{}方式
{
    let a={
        name:"a"
    };
    console.log(a);//{name:"a"};
    console.log(typeof a);//object
    console.log(a instanceof Object );//true
}

//3.匿名函数方式
{
    let a=function(){
        this.name="a";
    }();
    console.log(a);
}

//4.匿名函数返回对象
{
    let a=function(){
        return {
            name:"a"
        }
    }();
    
    console.log("返回匿名对象：",a);
}

{
    function A(){
        return {name:"a"};
    }
    function B(){
        this.a="kevin";
        return this;
    }
    let a=A();
    let b=B();
    console.log(a,b);
}

//创建对象的方式
{
    //1.使用new 操作符 + Object 创建对象
    let a=new Object();
    //2.使用大括号,字面式创建对象
    let b={};
    //3.使用function,构造函数模式
    function A(){
        this.a="a";
        function b(){}
    }
    
    //4.匿名函数
    //
    console.log(typeof a,typeof b);
}
//总结：
/**
 * 创建对象时，返回和不返回值的方式：
 * 1.返回：则需要设置一个对象变量，或者直接返回对象大括号
 * 2.不返回：使用this来设置属性
 * 
 * /

/*
用new和不用new的区别：
1.new:
2.不new:
*/

